In a communication system, traffic and/or control data are often generated and transmitted in the form of packets. A packet may include several bytes of data each byte normally including a fixed number of bits. Frequently, the length of a packet may be variable, i.e., is not a fixed number. In many communication systems, data packets are transmitted over a communication channel as a stream of data bytes. Therefore, to ensure that a receiver gets and can identify the data packets in the correct format, a receiver needs to be able to identify the beginning and the end positions of a data packet in a byte stream.
One known method of indicating packet boundaries is to add a length field at the beginning of each packet, which indicates the length of the packet. The method works well in an error-free environment. However, in reality, an error may occur such that the receiver does not get the correct length information of a packet. In this case, the error may propagate through subsequent packets, as the receiver loses the packet length synchronization thereafter.
Another known method of identifying packets is to stuff a specific field at the beginning of each packet to indicate the beginning position. The stuffed field is known beforehand to both the transmitter and the receiver. In the case where the same field already exists in the original data packet, additional field stuffing is required to avoid mistaking them with the stuffed beginning indicator. The drawback of such a method is that the size of the stuffed packets is increased as compared to packets without such stuffing. Perhaps even more importantly, the receiver has to check every field in the received data stream to identify the stuffing in order to retrieve the original packet format. This may be computationally expensive.
While the known techniques for identifying packets are functional in many cases, there remains room for improvement. Given the amount of packetized data being transmitted on a regular basis, it can be appreciated that there is a need for improved, robust and efficient methods of indicating packet boundaries in a byte stream transmitted over a communication channel. With the increase in the use of layered protocol structures, it is desirable that at least some of the new packet identification methods be suitable for use by communication systems with layered protocol structures.